#ifndef _J_EEROM__H
#define _J_EEROM__H
#include <stdint.h>

#define AT24C01 127
#define AT24C02 255
#define AT24C04 511
#define AT24C08 1023
#define AT24C16 2047
#define AT24C32 4095
#define AT24C64 8191
#define AT24C128 16383
#define AT24C256 32767

typedef void (*EEROM_Transmit)(uint16_t,uint16_t,uint16_t,uint8_t *,uint16_t,uint32_t);     //器件地址，内存地址，内存地址长度，数据，数据长度，超时时间
/****************************
 * 编码器接口定义
 * **************************/
typedef struct
{
	EEROM_Transmit            send;                      //数据发送函数
    EEROM_Transmit            read;                      //数据接收函数 
}EEROM_Port_Def_t;
/****************************
 * EEROM结构体
 * *************************/
typedef struct
{
    EEROM_Port_Def_t          eerom_port;                              //编码器通信函数
    uint32_t                  EEROM_Size;                              //EEROM 容量
    uint8_t                   EEROM_I2C_Addr;                          //EEROM I2C地址                                                            
}J_EEROM_Def_t;


void J_EEROM_Init(J_EEROM_Def_t *handle,uint8_t i2c_addr,uint32_t eerom_size,EEROM_Transmit send,EEROM_Transmit read);  //初始化
void AT24CXX_WriteOneByte(J_EEROM_Def_t *handle,uint16_t WriteAddr,uint8_t data);               //向EEROM写入一个数据
uint8_t AT24Cxx_ReadOneByte(J_EEROM_Def_t *handle,uint16_t ReadAddr);                           //从EEROM读取一个数据
void AT24CXX_Write(J_EEROM_Def_t *handle,uint16_t WriteAddr,uint8_t *pBuffer,uint16_t len);    //向EEROM写入指定个数据
void AT24CXX_Read(J_EEROM_Def_t *handle,uint16_t ReadAddr,uint8_t *pBuffer,uint16_t len);      //从EEROM读取指定个数据
#endif
